{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from ValidateCode import recognize\n",
    "from captcha.image import ImageCaptcha\n",
    "from PIL import Image\n",
    "import matplotlib.pyplot as plt\n",
    "from torchvision.transforms.functional import to_tensor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "str_ = 'CCKS'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x2783732518>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "generator = ImageCaptcha(width=192, height=64,\n",
    "                         fonts=[r'C:\\Windows\\Fonts\\times.ttf', r'C:\\Windows\\Fonts\\cour.ttf',\n",
    "                                r'C:\\Windows\\Fonts\\yugothib.ttf'])\n",
    "img = generator.generate_image(str_)\n",
    "plt.imshow(img)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "ename": "AttributeError",
     "evalue": "'Image' object has no attribute 'read'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-5-71813c4520e9>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrecognize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mE:\\LiuHuan\\Projects\\Spiders\\CNKI_fullpaper\\ValidateCode.py\u001b[0m in \u001b[0;36mrecognize\u001b[1;34m(path)\u001b[0m\n\u001b[0;32m     42\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     43\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mrecognize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 44\u001b[1;33m     \u001b[0mimage\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mto_tensor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     45\u001b[0m     \u001b[0moutput\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mimage\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0munsqueeze\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcuda\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     46\u001b[0m     \u001b[0moutput_argmax\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0moutput\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdetach\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpermute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margmax\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdim\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32md:\\anaconda3\\envs\\py36\\lib\\site-packages\\PIL\\Image.py\u001b[0m in \u001b[0;36mopen\u001b[1;34m(fp, mode)\u001b[0m\n\u001b[0;32m   2773\u001b[0m         \u001b[0mexclusive_fp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2774\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2775\u001b[1;33m     \u001b[0mprefix\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m16\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   2776\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2777\u001b[0m     \u001b[0mpreinit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'Image' object has no attribute 'read'"
     ]
    }
   ],
   "source": [
    "print(recognize(img))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
